Cryptography is a central part of information security and related issues, such as authentication and access control. Cryptography also contributes to computer science, and particularly the techniques used in computer and network security for information confidentiality. Cryptography is also used in many applications encountered by individuals on a regular basis, such as security of ATM cards, computer passwords, and electronic commerce. Applications for implementing cryptography are often referred to as Cryptographic Equipment Applications (CEAs), or more generally cryptographic applications. However, cryptography also creates a number of challenges when implemented in a given device or system.
In embedded programmable cryptographic solutions, it is often necessary to rely on a trusted Secure Operating System (SOS) to provide preemptive time and space partitioning in order to control and/or restrict information flow between portions of circuit having different security levels. However, the evaluation of the trusted operating system software may be difficult, time consuming, and very expensive. In order to adhere to various user requirements, the use of programmable cryptographic solutions is strongly encouraged due to their flexibility, their ability to be reprogrammed, and their reduced cost to upgrade the cryptographic solution.